package online.heycm.platform.lock;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 分布式锁注解，标记在接口上，锁住该接口
 *
 * @author heycm
 * @since 2023/1/27 15:34
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface DistributedLock {

    /**
     * 锁key的前缀
     */
    String prefix();

    /**
     * 锁有效时长（ms）
     */
    int leaseTime() default 3000;

    /**
     * 获取锁最大等待时长（ms）
     */
    int waitTime() default 300;
}
